#!/usr/bin/env node

const { execSync } = require("child_process");
const path = require("path");
const fs = require("fs");

console.log("Building Claude Code Router...");

try {
  // Build the main CLI application
  console.log("Building CLI application...");
  execSync(
    "esbuild src/cli.ts --bundle --platform=node --outfile=dist/cli.js",
    { stdio: "inherit" },
  );

  // Copy the tiktoken WASM file
  console.log("Copying tiktoken WASM file...");
  execSync(
    "shx cp node_modules/tiktoken/tiktoken_bg.wasm dist/tiktoken_bg.wasm",
    { stdio: "inherit" },
  );

  // Build the UI
  console.log("Building UI...");
  // Check if node_modules exists in ui directory, if not install dependencies
  if (!fs.existsSync("ui/node_modules")) {
    console.log("Installing UI dependencies...");
    execSync("cd ui && npm install", { stdio: "inherit" });
  }
  execSync("cd ui && npm run build", { stdio: "inherit" });

  // Copy the built UI index.html to dist
  console.log("Copying UI build artifacts...");
  execSync("shx cp ui/dist/index.html dist/index.html", { stdio: "inherit" });

  console.log("Build completed successfully!");
} catch (error) {
  console.error("Build failed:", error.message);
  process.exit(1);
}
